博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一种分页的实现
阅读量:5895 次
发布时间:2019-06-19

本文共 4115 字,大约阅读时间需要 13 分钟。

以下代码是一种分页的实现。分别是文件page.php和page.css。

分页的纠结点在于分页条中省略号的显示。

实现的基本逻辑是:

1,接收浏览器端传过来的想要显示的页码数 $page。

$page = $_GET['p']。

2,根据页码数 $page 以及固定的每页显示数 $pageSize 从数据库中取数据。

$sql = "SELECT * FROM books LIMIT ".(($page-1)*$pageSize).",10";

3,填充表格。

4,页码条头部显示。

5,页码条中间页码开始$atart及结束$end的具体求值。

  $showPage = 5; 为最大显示页码数

  $offset = ($showPage-1)/2; 为偏移量

  $sql = 'SELECT count(*) FROM books';

  $totalPage 为总的显示页码数

  (1)当$totalPage <= $showPage时,1~1+$totalPage。

  (2)当$totalPage > $showPage时,

    1~(1+$showPage)

    或者 ($page-offset)~($page+$offset+1)

    或者($totalPage-$showPage+1)~($totalPage+1)

6,根据 5 中得到的$start和$end显示中间的页码数。

7,6 的同时,还要加上相应的省略号。

  (1)$start > 1 时,前加省略号。

  (2)$end <= $totalPage 时,后加省略号。

8,跳转的设置。用form表单的方式。

9,相关样式的设置。

page.php

1   2   3     
4
5 6 7
"; 27 echo '
'; 28 echo '
'; 29 while($row = mysql_fetch_assoc($res)){ 30 echo '
'; 31 echo "
"; 32 echo "
"; 33 echo '
'; 34 } 35 echo '
ID NAME
{
$row['id']}
{
$row['name']}
'; 36 37 //4分页条参数设置 38 $showPage = 5;//同时最多可以显示页码数量 39 $offset = ($showPage-1)/2;//以当前页码为中心的最多偏移量 40 $sql = 'SELECT count(*) FROM books'; 41 $arr = mysql_fetch_array(mysql_query($sql)); 42 $totalPage = ceil($arr[0]/$pageSize);//可以显示的总页数 43 mysql_free_result($res); 44 mysql_close($conn); 45 $db = 'bookstore'; 46 //5分页条目首部显示 47 $page_banner = "
"; 48 if($page > 1){ 49 $page_banner .= "
首页"; 50 $page_banner .= "
<上一页>
"; 51 }else{ 52 $page_banner .= "
首页"; 53 $page_banner .= "
<上一页>
"; 54 } 55 //6分页条目中部显示,先找出开头结尾的页码 56 if($totalPage > $showPage){ 57 //显示部分页码,带了省略号,此处以5页为例 58 if(($page - $offset) <= 1){
//显示前5页,后面加省略号 59 $start = 1; 60 $end = $start + $showPage; 61 } elseif (($page + $offset) >= $totalPage) {
//显示最后5页,前边加省略号 62 $start = $totalPage - $showPage + 1; 63 $end = $totalPage + 1; 64 } else{
//前后都有省略号 65 $start = $page - $offset; 66 $end = $page + $offset + 1; 67 } 68 } else { 69 //显示所有可以显示的页码 70 $start = 1; 71 $end = $start + $totalPage; 72 } 73 if($start > 1){ 74 $page_banner .= '...'; 75 } 76 //7分页条目中部显示,根据页码显示相应 77 for($i = $start; $i < $end; $i++){ 78 if($i == $page){ 79 $page_banner .= "
".($i).""; 80 }else{ 81 $page_banner .= "
".($i).""; 82 } 83 } 84 //8分页条目尾部显示,根据页码显示相应 85 if($end <= $totalPage){ 86 $page_banner .= '...'; 87 } 88 if($page < $totalPage){ 89 $page_banner .= "
下一页>"; 90 $page_banner .= "
尾页"; 91 }else{ 92 $page_banner .= "
尾页"; 93 $page_banner .= "
下一页>"; 94 } 95 //9跳转 96 $page_banner .= "共".$totalPage."页"; 97 $page_banner .= "
"; 98 $page_banner .= "跳转到第
页"; 99 $page_banner .= "
";100 $page_banner .= "
";101 $page_banner .= "
";102 echo $page_banner;103 ?>104 105
View Code

page.css

1 body{ 2     text-align: center; 3     font-family: verdana; 4     font-size: 12px; 5     width:100%; 6 } 7 table{ 8     margin: 0 auto; 9     text-align:center;10 }11 div.page form{12     display: inline;13 }14 div.content{15     height:300px;16 }17 div.page a{18     border: 1px solid #aaaadd;19     text-decoration: none;20     padding: 2px 5px 2px 5px;21     margin: 2px;    22 }23 div.page span.current{24     border: 1px solid #000099;25     background-color: #000099;26     text-decoration: none;27     padding: 4px 6px 4px 6px;28     margin: 2px;    29     color: #fff;30 }31 div.page span.display{32     border: 1px solid #eee;33     text-decoration: none;34     padding: 2px 5px 2px 5px;35     margin: 2px;36     color:#ddd;37 }
View Code

 

转载于:https://www.cnblogs.com/omigia/p/4622520.html

你可能感兴趣的文章
AWS Amplify Console:赋予应用程序快速部署的能力
查看>>
歇逼了兄弟,心态崩了
查看>>
scrapy模拟登录代码演示及cookie原理说明
查看>>
[Flink]Flink1.3 Batch指南二 集群运行
查看>>
LeetCode 319 Bulb Switcher(灯泡切换)(从规律中发现算法……)
查看>>
数字化转型面临的五大挑战
查看>>
使用bootstrap-Validator校验表单
查看>>
微软没强迫?Win 10 版本号追踪网站 Buildfeed 关闭
查看>>
JDBC的Statement对象
查看>>
巧用DOS命令合并多个文本文件的内容
查看>>
内穆尔(Nemours)儿童健康系统选择HID Global解决方案
查看>>
行业看点 | 段路明研究组《自然》子刊发文 揭示深度神经网络和量子多体问题的关联...
查看>>
「镁客·请讲」bitBerg杨坤:冰山下藏着的是VR游戏的未来
查看>>
9Python全站之路系列之MySQL SL注入
查看>>
phantomjs-循环输出输入参数
查看>>
ListBox自绘,列表显示一系列图片
查看>>
控件名称不可修改
查看>>
综述:人工智能、数据科学、机器学习
查看>>
机器学习之k近邻算法
查看>>
远程桌面dos开启
查看>>